////////////////////////////////////////////////////////////////////////////
//
//  Crytek Engine Source File.
//  Copyright (C), Crytek Studios, 2002.
// -------------------------------------------------------------------------
//  File name:   cvars.h
//  Version:     v1.00
//  Created:     28/5/2001 by Vladimir Kajalin
//  Compilers:   Visual Studio.NET
//  Description: 
// -------------------------------------------------------------------------
//  History:
//
////////////////////////////////////////////////////////////////////////////

#ifndef _3DENGINE_CVARS_H_
#define _3DENGINE_CVARS_H_

#if defined(CONSOLE_CONST_CVAR_MODE)
# define GetFloatCVar(name) name ## Default
#else
# define GetFloatCVar(name) (Cry3DEngineBase::GetCVars())-> name
#endif

// console variables
struct CVars : public Cry3DEngineBase
{
	CVars() 
	{ Init(); }

	void Init();

	void GetMemoryUsage( ICrySizer *pSizer ) const
	{
		pSizer->AddObject(this, sizeof(*this));
	}
	//default values used for const cvars
#ifdef _RELEASE	
	enum { e_StatObjValidateDefault = 0 };	// Validate meshes in all but release builds.
#else
	enum { e_StatObjValidateDefault = 1 };	// Validate meshes in all but release builds.
#endif
	enum { e_GsmExtendLastLodDefault = 0 };
	enum { e_GsmCastFromTerrainDefault = 0 };
#ifdef CONSOLE_CONST_CVAR_MODE
	enum { e_TerrainNormalMapDefault = 0 };
	enum { e_DisplayMemoryUsageIconDefault = 0 };
#else
	enum { e_TerrainNormalMapDefault = 1 };
	enum { e_DisplayMemoryUsageIconDefault = 1 };
#endif
#define e_PhysOceanCellDefault (0.f)




	enum { e_DeformableObjectsDefault = 1 };
	enum { e_OcclusionVolumesDefault = 1 };


	//the following int-cvars become enums for release mode on consoles
	//saves code size, branches, instruction cache
	DeclareConstIntCVar(e_ObjectLayersActivationPhysics, 2);
	DeclareConstIntCVar(e_StatObjValidate, e_StatObjValidateDefault);
	DeclareConstIntCVar(e_StatObjPreload, 1);
	float e_StatObjTessellationMaxEdgeLenght;
	int e_StatObjTessellationMode;
	DeclareConstIntCVar(e_Render, 1);
	DeclareConstIntCVar(e_Tessellation, 1);
	float e_TessellationMaxDistance;
	DeclareConstIntCVar(e_ShadowsTessellateCascades, 1);
	DeclareConstIntCVar(e_ShadowsTessellateDLights, 0);
	DeclareConstIntCVar(e_ShadowsLodBiasFixed, 1);
	DeclareConstIntCVar(e_ShadowsLodBiasInvis, 0);
	DeclareConstIntCVar(e_GsmExtendLastLodUseVariance, 0);
	DeclareConstIntCVar(e_GsmExtendLastLodUseAdditiveBlending, 0);
	DeclareConstIntCVar(e_GsmExtendLastLodIncludeObjects, 0);	
	DeclareConstIntCVar(e_ShadowsDebug, 0);
	DeclareConstIntCVar(e_ShadowsFrustums, 0);
	DeclareConstIntCVar(e_ShadowsOnWater, 0);
	DeclareConstIntCVar(e_ShadowsMasksLimit, 0);
	DeclareConstIntCVar(e_ShadowsOcclusionCullingCaster, 0);
	DeclareConstIntCVar(e_Fog, 1);
	DeclareConstIntCVar(e_FogVolumes, 1);
	DeclareConstIntCVar(e_TerrainDetailMaterialsDebug, 0);
	DeclareConstIntCVar(e_ParticlesDebug, 0);
	DeclareConstIntCVar(e_ParticlesCullAgainstViewFrustum, 0);
	DeclareConstIntCVar(e_ParticlesDumpMemoryAfterMapLoad, 0);
	DeclareConstIntCVar(e_ParticlesLights, 1);
	DeclareConstIntCVar(e_Roads, 1);
	DeclareConstIntCVar(e_DecalsHitCache, 1);
	DeclareConstIntCVar(e_DecalsMerge, 0);
	DeclareConstIntCVar(e_DecalsClip, 1);
	DeclareConstIntCVar(e_DecalsPreCreate, 1);
	DeclareConstIntCVar(e_DecalsScissor, 1);
	DeclareConstIntCVar(e_DecalsMaxValidFrames, 600);
	DeclareConstIntCVar(e_VegetationBending, 1);
	DeclareConstIntCVar(e_ForceDetailLevelForScreenRes, 0);
	DeclareConstIntCVar(e_VegetationSphericalSkinning, 1);
	DeclareConstIntCVar(e_VegetationAlphaBlend, 1);
	DeclareConstFloatCVar(e_VegetationSpritesScaleFactor);
	DeclareConstIntCVar(e_VegetationSpritesBatching, 1);
	DeclareConstIntCVar(e_VegetationBoneInfo, 0);
	DeclareConstIntCVar(e_Wind, 1);
	DeclareConstIntCVar(e_WindAreas, 1);
	DeclareConstIntCVar(e_SkyBox, 1);
	DeclareConstIntCVar(e_SkyType, 1);
	DeclareConstIntCVar(e_TerrainOcclusionCullingVersion, 1);
	DeclareConstIntCVar(e_TerrainOcclusionCullingDebug, 0);
	DeclareConstIntCVar(e_TerrainDeformations, 0);
	DeclareConstIntCVar(e_AutoPrecacheCameraJumpDist, 16);
	DeclareConstIntCVar(e_AutoPrecacheTerrainAndProcVeget, 0);
	DeclareConstIntCVar(e_AutoPrecacheTexturesAndShaders, 0);
	DeclareConstIntCVar(e_AutoPrecacheCgf, 1);
	DeclareConstIntCVar(e_TerrainBBoxes, 0);
	int e_TerrainNormalMap;
	int e_WaterOceanFFT;
	DeclareConstIntCVar(e_WaterOceanBottom, 1);
	DeclareConstIntCVar(e_DebugDraw, 0);
	DeclareConstIntCVar(e_DebugDrawShowOnlyCompound, 0);
	DeclareConstIntCVar(e_DebugDrawShowOnlyLod, -1);
	DeclareConstIntCVar(e_TerrainOcclusionCulling, 1);
	DeclareConstIntCVar(e_TerrainOcclusionCullingMaxSteps, 50);
	DeclareConstIntCVar(e_TerrainOcclusionCullingStepSize, 4);
	DeclareConstIntCVar(e_TerrainTextureDebug, 0);
	DeclareConstIntCVar(e_TerrainTextureStreamingDebug, 0);
	DeclareConstIntCVar(e_TerrainLog, 0);
	DeclareConstIntCVar(e_CoverageBufferCullIndividualBrushesMaxNodeSize, 0);
	DeclareConstIntCVar(e_CoverageBufferTreeDebug, 0);
	DeclareConstIntCVar(e_CoverageBufferDebug, 0);
	DeclareConstIntCVar(e_CoverageBufferDebugFreeze, 0);
	DeclareConstIntCVar(e_CoverageBufferDrawOccluders, 0);
	DeclareConstIntCVar(e_CoverageBufferTestMode, 2);
	DeclareConstIntCVar(e_CoverageBufferLightsDebugSide, -1);
	DeclareConstIntCVar(e_CoverageBufferTolerance, 0);
	DeclareConstIntCVar(e_CoverageBufferOccludersTestMinTrisNum, 0);
	DeclareConstIntCVar(e_CoverageBufferMaxAddRenderMeshTime, 2);
	DeclareConstIntCVar(e_CoverageBufferTerrain, 0);
	DeclareConstIntCVar(e_CoverageBufferTerrainLodShift, 2);
	DeclareConstIntCVar(e_DynamicLightsMaxCount, 512);
	DeclareConstIntCVar(e_DynamicLights, 1);
	DeclareConstIntCVar(e_DynamicLightsForceDeferred, 1);
	DeclareConstIntCVar(e_DynamicLightsConsistentSortOrder, 1);
	DeclareConstIntCVar(e_HwOcclusionCullingWater, 1);
	DeclareConstIntCVar(e_Portals, 1);
	DeclareConstIntCVar(e_PortalsBigEntitiesFix, 1);
	DeclareConstIntCVar(e_WaterVolumes, 2);
	DeclareConstIntCVar(e_WaterWaves, 0);
	DeclareConstIntCVar(e_WaterWavesTessellationAmount, 5);
	DeclareConstIntCVar(e_BBoxes, 0);
	DeclareConstIntCVar(e_CoverCgfDebug, 0);
	DeclareConstIntCVar(e_StreamSaveStartupResultsIntoXML, 0);
	DeclareConstIntCVar(e_StreamCgfDebugHeatMap, 0);
	DeclareConstIntCVar(e_StreamCgfDebug, 0);
	DeclareConstIntCVar(e_StreamCgfDebugMinObjSize, 100);
	DeclareConstIntCVar(e_ScissorDebug, 0);
	DeclareConstIntCVar(e_Sleep, 0);
	DeclareConstIntCVar(e_Objects, 1);
	DeclareConstIntCVar(e_TerrainDrawThisSectorOnly, 0);
	DeclareConstIntCVar(e_OcclusionVolumes, e_OcclusionVolumesDefault);
	DeclareConstIntCVar(e_OcclusionLazyHideFrames, 0);
	DeclareConstIntCVar(e_PrecacheLevel, 0);
	DeclareConstIntCVar(e_Voxel, 1);
	DeclareConstIntCVar(e_VoxTerPlanarProjection, 0);
	DeclareConstIntCVar(e_VoxTerIntegrateBoxes, 0);
	DeclareConstIntCVar(e_VoxTerTexFormat, eTF_DXT1);
	DeclareConstIntCVar(e_VoxTerMemoryUsageDebug, 0);
	DeclareConstIntCVar(e_VoxTerDiskUsageDebug, 0);
	DeclareConstIntCVar(e_VoxTerTexUsageDebug, 0);
	DeclareConstIntCVar(e_VoxTerMeshUsageDebug, 0);
	DeclareConstIntCVar(e_VoxTerBorderLodPlus, 2);
	DeclareConstIntCVar(e_VoxTerRelaxation, 0);
	DeclareConstIntCVar(e_VoxTerTexDebug, 0);
	DeclareConstIntCVar(e_VoxTerHideIntegrated, 0);
	DeclareConstIntCVar(e_VoxTerInGameTextureStreaming, 1);
	DeclareConstIntCVar(e_VoxTerTexBuildOnCPU, 0);
	DeclareConstIntCVar(e_VoxTer, 0);
	DeclareConstIntCVar(e_VoxTerExportObjects, 0);
	DeclareConstIntCVar(e_VoxTerVegetationEx, 0);
	DeclareConstIntCVar(e_VoxTerMaxMeshLods, 9);
	DeclareConstIntCVar(e_VoxTerHeightmapEditing, 0);
	DeclareConstIntCVar(e_VoxTerHeightmapEditingCustomLayerInfo, 0);
	DeclareConstIntCVar(e_VoxTerDebug, 0);
	DeclareConstIntCVar(e_VoxTerRoadsCheck, 1);
	DeclareConstIntCVar(e_VoxTerShapeCheck, 0);
	DeclareConstIntCVar(e_VoxTerDebugBuildLeafs, 0);
	DeclareConstIntCVar(e_VoxTerAddBrushes, 1);
	DeclareConstIntCVar(e_VoxTerShadows, 1);
	DeclareConstIntCVar(e_VoxTerOnTheFlyIntegration, 0);
	DeclareConstIntCVar(e_VoxTerUpdateTextures, 0);
	DeclareConstIntCVar(e_VoxTerTraceMessages, 0);
	DeclareConstIntCVar(e_VoxTerTexResExportDownscale, 1);
	DeclareConstIntCVar(e_VoxTerTexResBumpDownscale, 1);
	DeclareConstIntCVar(e_VoxTerTexRebuildEveryFrame, 0);
	DeclareConstIntCVar(e_VoxTerMixMask, 0);
	DeclareConstIntCVar(e_VoxTerOverlayBlend, 0);
	DeclareConstIntCVar(e_VoxelGenerate, 0);
	DeclareConstIntCVar(e_VoxelDebug, 0);
	DeclareConstIntCVar(e_VoxelAoRadius, 6);
	DeclareConstIntCVar(e_VoxelAoScale, 8);
	DeclareConstIntCVar(e_VoxelLodsNum, 2);
	DeclareConstIntCVar(e_Recursion, 1);
	DeclareConstIntCVar(e_RecursionOcclusionCulling, 0);
	DeclareConstIntCVar(e_ProcVegetationMaxViewDistance, 128);
	DeclareConstIntCVar(e_GsmDepthBoundsDebug, 0);
	DeclareConstIntCVar(e_GsmStats, 0);
	DeclareConstIntCVar(e_SkyQuality, 1);
	DeclareConstIntCVar(e_ObjectsTreeBBoxes, 0);
	DeclareConstIntCVar(e_MtTest, 0);
	DeclareConstIntCVar(e_StatObjTestOBB, 0);
	DeclareConstIntCVar(e_DeformableObjects, e_DeformableObjectsDefault);
	DeclareConstIntCVar(e_ScreenShot, 0);
	DeclareConstIntCVar(e_PhysFoliage, 2);
	DeclareConstIntCVar(e_Ropes, 1);
	DeclareConstIntCVar(e_LodMinTtris, 300);
	DeclareConstIntCVar(e_Lods, 1);
	DeclareConstIntCVar(e_LodsForceUse,	1);
	DeclareConstIntCVar(e_ObjStats, 0);
	DeclareConstIntCVar(e_ObjFastRegister, 1);
	DeclareConstIntCVar(e_CameraFreeze, 0);
	DeclareConstIntCVar(e_SplitScreenTest, 0);
	DeclareConstIntCVar(e_StatObjMerge, 1);
	DeclareConstIntCVar(e_StatObjMergeUseThread, 1);
	DeclareConstIntCVar(e_StatObjMergeMaxTrisPerDrawCall, 500);
	DeclareConstIntCVar(e_GISecondaryOcclusion, 0);
	DeclareConstIntCVar(e_GIGlossyReflections, 0);
	DeclareConstIntCVar(e_GIRSMSize, CRELightPropagationVolume::espMaxInjectRSMSize);
#if !defined(XENON) && !defined(PS3)
	DeclareConstIntCVar(e_GIIterations, 10);


#endif
	int e_GICache;
	DeclareConstIntCVar(e_DisplayMemoryUsageIcon, e_DisplayMemoryUsageIconDefault);
	DeclareConstIntCVar(e_PrepareDeformableObjectsAtLoadTime, 0);
	DeclareConstIntCVar(e_PreloadMaterials, 1);
	DeclareConstIntCVar(e_PreloadDecals, 1);
	DeclareConstIntCVar(e_3dEngineLogAlways, 0);
	DeclareConstIntCVar(e_DeferredPhysicsEvents, 1);
	DeclareConstIntCVar(e_DefaultMaterial, 0);
	DeclareConstIntCVar(e_DebugLights, 0);
	DeclareConstIntCVar(e_VoxTerOptimizeLods, 0);



	DeclareConstIntCVar(e_3dEngineTempPoolSize, 1024);

	DeclareConstIntCVar(e_GsmScatterLodDist, 70);
	DeclareConstIntCVar(e_TimeOfDayDebug, 0);
	DeclareConstIntCVar(e_StreamCgfUpdatePerNodeDistance, 1);

//declare flexible cvars even for release mode which 
//	either are changed, accessed in other modules or differ for consoles
	float e_ShadowsCharacterExtend;
int
		e_ObjectLayersActivation,
		e_RNTmpDataPoolMaxFrames,
		e_Shadows,
    e_ShadowsOnAlphaBlend,
    e_ShadowsClouds,
		e_ShadowsMaxTexRes,
		e_ShadowsOcclusionCulling,
	  e_GsmExtendLastLod,
		e_GsmCastFromTerrain,
		e_TerrainDetailMaterials,
    e_Particles,
		e_ParticlesThread,



		e_ParticlesObjectCollisions,
		e_ParticlesPreload,
		e_ParticlesQuality,
		e_ParticlesPoolSize,
		e_ParticlesEmitterPoolSize,
		e_ParticlesUseLevelSpecificLibs,
		e_ParticlesAnimBlend,
		e_ParticlesGI,
		e_ParticlesSoftIntersect,
		e_ParticlesDiffCM,
		e_ParticlesMotionBlur,
		e_ParticlesShadows,
    e_Decals,
		e_DecalsForceDeferred,
    e_DecalsDefferedStatic,
    e_DecalsDefferedDynamic,
    e_DecalsMaxTrisInObject,
    e_DecalsAllowGameDecals,
		e_HwOcclusionCullingObjects,
    e_DecalsMaxUpdatesPerFrame,
    e_Vegetation,
    e_VegetationUseTerrainColor,
    e_VegetationSprites,		
    e_VegetationProfiler,
    e_Entities,
    e_Terrain,
    e_AutoPrecacheCgfMaxTasks,
    e_WaterOcean,
    e_TerrainTextureStreamingPoolItemsNum,
    e_Sun,
		e_StatObjBufferRenderTasks,
		e_CoverageBuffer,
		e_CoverageBufferRotationSafeCheck,    
		e_CoverageBufferVersion,		
		e_CoverageBufferResolution,



		e_CoverageBufferReproj,
		e_CoverageBufferAccurateOBBTest,
		e_CullerThread,
		e_DynamicLightsFrameIdVisTest,
		e_DynamicLightsMaxEntityLights,		
    e_WaterTessellationAmount,
		e_WaterTessellationAmountX,
		e_WaterTessellationAmountY,
    e_WaterTessellationSwathWidth,		
		e_Brushes,
//    e_SceneMerging,
//    e_SceneMergingMaxTrisPerInputChunk,
    e_StreamCgf,    
		e_StreamCgfPoolSize,
		e_SQTestBegin,
		e_SQTestCount,
		e_SQTestExitOnFinish,
		e_SQTestDistance,
		e_SQTestMip,
		e_SQTestMoveSpeed,
    e_StreamCgfMaxTasksInProgress,
		e_StreamPredictionMaxVisAreaRecursion,
		e_StreamPredictionTexelDensity,
		e_StreamPredictionAlwaysIncludeOutside,
		e_OnDemandPhysics,	
		e_Dissolve,		
    e_VoxTerPaintSleep,
		e_VoxelUpdatePhysics,
    e_VoxTerMemWarning,
		e_VoxScanScene,
    e_VoxTerTexPoolSizeForEditor,
    e_VoxTerMaxMeshesInMem,
    e_VoxTerTexBuildsPerFrame,
    e_VoxTerMaxMeshBuildDepth,
    e_VoxTerMaxMeshBuildDepthLimit,
    e_VoxTerThreads,
    e_VoxTerDebugNodesGenDepth,
    e_VoxTerDebugAreaSizeMax,
    e_VoxTerDebugAreaSizeRatio,
		e_VoxTerActivateAll,
    e_VoxTerLog,
    e_VoxTerIntegrateVegetations,
    e_VoxTerAsyncPhysicalization,
    e_VoxTerTexResInternal,
    e_VoxTerTexResFinal,
		e_VoxTerMeshSimplify,
		e_ProcVegetation,
    e_ProcVegetationMaxSectorsInCache,
    e_ProcVegetationMaxObjectsInChunk,
		e_GsmLodsNum,
    e_GsmCacheLodOffset,
		e_GsmCacheLodOffsetExtended,
		e_GsmViewSpace,
		e_Clouds,
		e_CullVegActivation,
		e_ScreenShotWidth,
		e_ScreenShotHeight,
		e_ScreenShotQuality,
		e_ScreenShotMinSlices,
		e_ScreenShotDebug,
		e_ScreenShotMapOrientation,
    e_PhysMinCellSize,
		e_PhysProxyTriLimit,
		e_LodMin,
		e_CharLodMin,
		e_LodMax,
    e_TerrainAo,
		e_ObjQuality,
		e_GI,
    e_WorldSegmentationTest,
    e_DecalsOverlapping,
	  e_GsmCache, 
	  e_levelStartupFrameNum,
	  e_levelStartupFrameDelay,
		e_CacheNearestCubePicking,
		e_UncompressedTerrainTexture;


	//for float cvars, the default needs to be defined
#define e_DecalsDefferedDynamicMinSizeDefault (0.35f)
#define e_DecalsDefferedDynamicDepthScaleDefault (0.2f)
#define e_DecalsPlacementTestAreaSizeDefault (0.22f)
#define e_StreamPredictionDistanceFarDefault (16.f)
#define e_StreamPredictionDistanceNearDefault (0.f)
#define e_StreamCgfVisObjPriorityDefault (0.5f)
#define e_RecursionViewDistRatioDefault (0.1f)
#define e_MaxViewDistFullDistCamHeightDefault (1000.f)
#define e_CoverageBufferOccludersLodRatioDefault (0.25f)
#define e_LodCompMaxSizeDefault (6.f)
#define e_MaxViewDistanceDefault (-1.f)
#define e_ViewDistCompMaxSizeDefault (64.f)
#define e_ViewDistRatioPortalsDefault (60.f)
#define e_ViewDistRatioLightsDefault (25.f)
#define e_ParticlesLightsViewDistRatioDefault (256.f)
#define e_TerrainOcclusionCullingPrecisionDefault (0.25f)
#define e_TerrainOcclusionCullingPrecisionDistRatioDefault (3.f)
#define e_TerrainOcclusionCullingStepSizeDeltaDefault (1.05f)
#define e_TerrainLodRatioHolesMinDefault (2.f)
#define e_ShadowsCastViewDistRatioLightsDefault (1.f)
#define e_DecalsRangeDefault (20.f)
#define e_GsmRangeStepExtendedDefault (8.f)
#define e_TerrainDetailMaterialsViewDistZDefault (128.f)
#define e_TerrainDetailMaterialsViewDistXYDefault (2048.f)
#define e_TerrainDetailMaterialsZAngleDefault (45.f)
#define e_SunClipPlaneRangeDefault (256.f)
#define e_SunAngleSnapSecDefault (0.1f)
#define e_SunAngleSnapDotDefault (0.999999f)
#define e_OcclusionVolumesViewDistRatioDefault (0.05f)
#define e_FoliageStiffnessDefault (3.2f)
#define e_FoliageBranchesStiffnessDefault (100.f)
#define e_FoliageBranchesDampingDefault (10.f)
#define e_FoliageBrokenBranchesDampingDefault (15.f)
#define e_TerrainTextureLodRatioDefault (1.f)
#define e_JointStrengthScaleDefault (1.f)
#define e_VolObjShadowStrengthDefault (.4f)
#define e_CameraRotationSpeedDefault (0.f)
#if !defined(XENON) && !defined(PS3)
#define e_GIAmountDefault (1.f)



#endif
#define e_GICascadesRatioDefault (2.f)
#define e_GIMaxDistanceDefault 50.f
#define e_GIOffsetDefault 0.2f
#define e_GIBlendRatioDefault 0.25f
#define e_GIPropagationAmpDefault 3.3f
#define e_StreamCgfFastUpdateMaxDistanceDefault (16.f)
#define e_StreamPredictionMinFarZoneDistanceDefault (16.f)
#define e_StreamPredictionMinReportDistanceDefault (0.75f)
#define e_StreamCgfGridUpdateDistanceDefault (0.f)
#define e_StreamPredictionAheadDefault (0.5f)
#define e_StreamPredictionAheadDebugDefault (0.f)
#define e_DissolveDistMaxDefault (8.0f)
#define e_DissolveDistMinDefault (2.0f)
#define e_DissolveDistbandDefault (3.0f)
#define e_RenderMeshCollisionToleranceDefault (0.3f)
#define e_VegetationSpritesScaleFactorDefault (1.0f)

	DeclareConstFloatCVar(e_DecalsPlacementTestAreaSize);
	DeclareConstFloatCVar(e_DecalsDefferedDynamicMinSize);
	DeclareConstFloatCVar(e_DecalsDefferedDynamicDepthScale);
	DeclareConstFloatCVar(e_StreamPredictionDistanceFar);
	DeclareConstFloatCVar(e_StreamPredictionDistanceNear);
	DeclareConstFloatCVar(e_StreamCgfVisObjPriority);
	DeclareConstFloatCVar(e_RecursionViewDistRatio);
	DeclareConstFloatCVar(e_MaxViewDistFullDistCamHeight);
	DeclareConstFloatCVar(e_CoverageBufferOccludersLodRatio);
	DeclareConstFloatCVar(e_LodCompMaxSize);
	DeclareConstFloatCVar(e_MaxViewDistance);
	DeclareConstFloatCVar(e_ViewDistCompMaxSize);
	DeclareConstFloatCVar(e_ViewDistRatioPortals);
	float e_ViewDistRatioLights;
	DeclareConstFloatCVar(e_ParticlesLightsViewDistRatio);
	DeclareConstFloatCVar(e_TerrainOcclusionCullingPrecision);
	DeclareConstFloatCVar(e_TerrainOcclusionCullingPrecisionDistRatio);
	DeclareConstFloatCVar(e_TerrainOcclusionCullingStepSizeDelta);
	DeclareConstFloatCVar(e_TerrainLodRatioHolesMin);
	DeclareConstFloatCVar(e_ShadowsCastViewDistRatioLights);
	int e_ShadowsUpdateViewDistRatio;
	DeclareConstFloatCVar(e_DecalsRange);
	DeclareConstFloatCVar(e_TerrainDetailMaterialsViewDistZ);
	DeclareConstFloatCVar(e_TerrainDetailMaterialsViewDistXY);
	DeclareConstFloatCVar(e_TerrainDetailMaterialsZAngle);
	DeclareConstFloatCVar(e_SunClipPlaneRange);
	DeclareConstFloatCVar(e_SunAngleSnapSec);
	DeclareConstFloatCVar(e_SunAngleSnapDot);
	DeclareConstFloatCVar(e_OcclusionVolumesViewDistRatio);
	DeclareConstFloatCVar(e_FoliageStiffness);
	DeclareConstFloatCVar(e_FoliageBranchesStiffness);
	DeclareConstFloatCVar(e_FoliageBranchesDamping);
	DeclareConstFloatCVar(e_FoliageBrokenBranchesDamping);
	DeclareConstFloatCVar(e_TerrainTextureLodRatio);
	float e_PhysOceanCell;
	DeclareConstFloatCVar(e_JointStrengthScale);
	DeclareConstFloatCVar(e_VolObjShadowStrength);
	DeclareConstFloatCVar(e_CameraRotationSpeed);
	DeclareConstFloatCVar(e_GIMaxDistance);
	DeclareConstFloatCVar(e_GIBlendRatio);
	int e_GINumCascades;
	DeclareConstFloatCVar(e_GIOffset);
	float e_GIPropagationAmp;
	float e_GIAmount;
	DeclareConstFloatCVar(e_GICascadesRatio);
	DeclareConstFloatCVar(e_StreamCgfFastUpdateMaxDistance);
	DeclareConstFloatCVar(e_StreamPredictionMinFarZoneDistance);
	DeclareConstFloatCVar(e_StreamPredictionMinReportDistance);
	DeclareConstFloatCVar(e_StreamCgfGridUpdateDistance);
	DeclareConstFloatCVar(e_StreamPredictionAhead);	
	DeclareConstFloatCVar(e_StreamPredictionAheadDebug);	
	DeclareConstFloatCVar(e_DissolveDistMax);
	DeclareConstFloatCVar(e_DissolveDistMin);
	DeclareConstFloatCVar(e_DissolveDistband);

//declare flexible float cvars even for release mode which 
//	either are changed, accessed in other modules or differ for consoles
  float 
		e_SQTestDelay,
    e_VoxTerTexRangeScale,
    e_VoxTerRoadsCullDist,
    e_VoxTerMeshSize,
    e_VoxTerDebugLodRatio,
    e_VoxTerDebugX,
    e_VoxTerDebugY,
		e_VoxTerTexTiling,
		e_VoxTerViewDistRatio,
		e_VoxTerViewDistRatioPrediction,
		e_VoxTerViewDistRatioMeshActivate,
//    e_SceneMergingViewDistRatio,
//    e_SceneMergingMinNodeSize,
    e_MaxViewDistSpecLerp,
		e_ScreenShotMapCenterX,
		e_ScreenShotMapCenterY,
		e_ScreenShotMapSizeX,
		e_ScreenShotMapSizeY,
		e_ScreenShotMapCamHeight,	
		e_CoverageBufferBias,
		e_CoverageBufferAABBExpand,
    e_CoverageBufferOccludersViewDistRatio,
		e_CoverageBufferDebugDrawScale,
//    e_CoverageBufferTerrainElevationShift,
//    e_CoverageBufferTerrainLodRatio,
//    e_CoverageBufferTerrainMaxDistance,
    e_VegetationSpritesMinDistance,
    e_VegetationSpritesDistanceRatio,
    e_VegetationSpritesDistanceCustomRatioMin,
		e_DissolveSpriteDistRatio,
		e_DissolveSpriteMinDist,
    e_VegetationAlignToTerrainAmount,
		e_LodRatio,
		e_ViewDistRatio,
		e_ViewDistRatioDetail,
		e_ViewDistRatioVegetation,
		e_ViewDistRatioCustom,
		e_ViewDistMin,
		e_StreamPredictionUpdateTimeSlice,
		e_StreamAutoMipFactorSpeedThreshold,
		e_StreamAutoMipFactorMin,
		e_StreamAutoMipFactorMax,
		e_StreamAutoMipFactorMaxDVD,
    e_TerrainOcclusionCullingMaxDist,
    e_OcclusionCullingViewDistRatio,
    e_VegetationMinSize,
		e_TerrainLodRatio,
		e_ParticlesLod,
		e_ParticlesMinDrawAlpha,
		e_ParticlesMinDrawPixels,
		e_ParticlesMaxDrawScreen,
		e_ParticlesMaxScreenFill,
    e_ShadowsCastViewDistRatio,
		e_DecalsLifeTimeScale,
		e_DecalsNeighborMaxLifeTime,
    e_ShadowsResScale,
    e_ShadowsAdaptScale,
    e_ShadowsSlopeBias,
		e_ShadowsSlopeBiasHQ,
    e_ShadowsConstBias,
		e_ShadowsConstBiasHQ,
		e_GsmRange,
		e_GsmRangeStep,
		e_GsmRangeStepExtended,
    e_SkyUpdateRate,
		e_FoliageBranchesTimeout,
		e_FoliageWindActivationDist,
		e_TimeOfDay,
    e_TimeOfDaySpeed,
		e_OnDemandMaxSize,
	e_RenderMeshCollisionTolerance;

int e_CheckOctreeObjectsBoxSize; 
int e_MaxDrawCalls;

	ICVar 
		* e_ScreenShotFileFormat, * e_SQTestTextureName, * e_StreamCgfDebugFilter, * e_CameraGoto;
};

#endif // _3DENGINE_CVARS_H_
